/*
 * Author: 李波（Edwin Lee)
 * Date: 2024-06-14 18:30:53
 * FilePath: /chat/include/server/chatserver.h
 * LastEditTime: 2024-06-20 10:35:36
 * version: 1.0
 * Description:
 */

#ifndef CHATSERVER_H
#define CHATSERVER_H

#include <muduo/net/TcpClient.h>
#include <muduo/net/EventLoop.h>
#include <muduo/net/TcpServer.h>

using namespace muduo;
using namespace muduo::net;
using namespace std;


//description: 聊天服务器的主类
//Date: 2024-06-14 18:48:30
class ChatServer
{
public:
    //description: 初始化聊天服务器对象
    //param loop:
    //param listenAddr:
    //param nameArg:
    //return {void}
    //Date: 2024-06-14 18:36:31
    ChatServer(EventLoop* loop, const InetAddress& listenAddr, 
        const string& nameArg);

    //description: 启动服务
    //Date: 2024-06-14 18:41:09
    void start();
private:
    //description: 上报连接相关信息的回调函数
    //Date: 2024-06-14 18:44:09
    void onConnection(const TcpConnectionPtr&);

    //description: 上报读写事件相关信息的回调函数
    //Date: 2024-06-14 18:44:54
    void onMessage(const TcpConnectionPtr&, Buffer*, Timestamp);

    TcpServer server_;      // 组合的muduo库，实现服务器功能的类对象
    EventLoop* loop_;       // 指向事件循环对象的指针
};

#endif
